// -*- mode: c++; coding: utf-8 -*-

#ifndef _COGNITIVE_VIDEO
#define _COGNITIVE_VIDEO

#include <Ice/BuiltinSequences.ice>

module Oculus
{	 

  // TODO.

  struct Position {
    int x; int y;
  };

  struct Role {
    string actor; float belief;
  };
  ["java:type:java.util.Vector<Role>"]
  sequence<Role> RoleSeq;

  struct Location
  {
    // Identificador de la zona.
    string zone;
    // Valor de satisfacción.
    float belief;
  };
  ["java:type:java.util.Vector<Location>"]
  sequence<Location> LocationSeq;

  struct ObjectInfo {
    string id;
    int frame;
    Position pos;
    LocationSeq locations;
    RoleSeq roles;
  };
  ["java:type:java.util.Vector<ObjectInfo>"]
  sequence<ObjectInfo> ObjectInfoSeq;

  struct ObjectInfoEvent 
  {
    int camera;
    ObjectInfoSeq ois;
  };

  struct Actor {
    string id;
    // RoleSeq roles;
    Position pos;
    int w; int h;
    int hs; int vs;
    float mov;
  };
  sequence<Actor> ActorSeq;

  struct Frame {
    int number;
    ActorSeq actors;
  };
  sequence<Frame> FrameSeq;

  struct VideoEvent
  {
    int camera;
    FrameSeq frames;
  };

  struct TID
  {
    int camera;
    int frame;
    string obj;
  };
  ["java:type:java.util.Vector<TID>"]
  sequence<TID> TIDSeq;

  struct T
  {
    TID key;
    float c1;
    float c2;
    LocationSeq locations;
    RoleSeq roles;    
  };  
  ["java:type:java.util.Vector<T>"]
  sequence<T> TSeq;

  struct TFrame
  {
    int camera;
    int frame;
  };

};

#endif
